/**
 * 全局工具类
 * 注意：工具方法不应该放到这里，除非必须要用到VUE上下文环境 this.？？,或者,需要在标签内直接使用<a @click="???()">
 * 注意：工具方法不应该放到这里，除非必须要用到VUE上下文环境 this.？？,或者,需要在标签内直接使用<a @click="???()">
 * 注意：工具方法不应该放到这里，除非必须要用到VUE上下文环境 this.？？,或者,需要在标签内直接使用<a @click="???()">
 */
import {TagsViewModule} from "@/core/store/modules/tags-view";
import {Component, Vue} from "vue-property-decorator";

@Component({
    name: 'Kit',
})
export default class Kit extends Vue {
    // src(path: any = '/') {
    // return require('@/assets/image/admin/manage_user.jpg')
    // return require(path)
    // }

    /**
     * 刷新当前界面
     * （这么写的原因避免刷新时重新加载界面，减少资源的消耗）
     */
    refreshView() {
        this.go("RedirectBeforeView")
    }


    /**
     * 获取前一个路由组件名
     *
     * 用法： this.beforeName();<span>{{beforeUrl()}}</span>
     */
    get beforeName() {
        return this.$route.query.beforeName
    }

    /**
     * 获取前一个路由url
     *
     * 用法： this.beforeUrl();<span>{{beforeUrl()}}</span>
     */
    get beforeUrl() {
        return this.$route.query.beforeUrl
    }

    /**
     * 当前路由
     * 用法： this.nowPath();<span>{{nowPath()}}</span>
     */
    get nowPath() {
        return this.$route.fullPath;
    }


    /**
     * 跳转路由
     *
     * @param pathOrName 路由/组件名
     * @param query 参数对象
     *
     * 用法： this.go();<a @click="go()">
     */
    go(pathOrName: any = "", query: any = {}): any {
        query.beforeName = this.$route.name;
        query.beforeUrl = this.$route.fullPath;
        if (pathOrName.toString().indexOf("/") != -1) {
            // alert("path");
            return this.$router.push({path: pathOrName, query: query} as any);
        } else {
            // alert("name");
            return this.$router.push({name: pathOrName, query: query} as any);
        }
    };

    /**
     * 关闭当前路由,跳转到新路由
     *
     * @param pathOrName 路由/组件名
     * @param query 参数对象
     *
     * 用法： this.back();<a @click="back()">
     */
    back(pathOrName: any = "/", query: any = {}) {
        query.beforeName = this.$route.name;
        query.beforeUrl = this.$route.fullPath;
        TagsViewModule.delViewByRoute(this.$route);
        if (pathOrName.toString().indexOf("/") != -1) {
            this.$router.push({path: pathOrName, query: query} as any);
        } else {
            this.$router.push({name: pathOrName, query: query} as any);
        }
    };

    //时间快捷选项插件
    quickPickerOptions = {
        shortcuts: [{
            text: '最近一周',
            onClick(picker: any) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                picker.$emit('pick', [start, end]);
            }
        }, {
            text: '最近一个月',
            onClick(picker: any) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                picker.$emit('pick', [start, end]);
            }
        }, {
            text: '最近三个月',
            onClick(picker: any) {
                const end = new Date();
                const start = new Date();
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                picker.$emit('pick', [start, end]);
            }
        }]
    };

    /**
     * 返回JSON对象，默认返回{}
     *
     * @param obj 对象
     * @param defaultValue 默认返回值
     *
     * 用法： this.parseObject();<span>{{parseObject()}}</span>
     */
    parseObject(obj: any, defaultValue: any = {}): any {
        if (obj && obj.trim() != "") {

            if (typeof obj == "object") {
                return JSON.parse(JSON.stringify(obj));
            }

            if (typeof obj == "string") {
                return JSON.parse(obj);
            }
        }
        return defaultValue;
    }

    /**
     * 返回JSON数组，默认返回[]
     *
     * @param obj 对象
     * @param defaultValue 默认返回值
     *
     * 用法： this.parseArray();<span>{{parseArray()}}</span>
     */
    parseArray(obj: any, defaultValue: any = []): any {
        if (obj && obj.trim() != "") {
            if (typeof obj == "object") {
                return JSON.parse(JSON.stringify(obj));
            }
            if (typeof obj == "string") {
                return JSON.parse(obj);
            }
        }
        return defaultValue;
    }

    /**
     * 返回JSON数组，默认返回[] 默认分隔符
     */
    split(obj: any, split: any = ",", defaultValue: any = []): any {
        if (obj) {
            let s = obj.toString();
            return s.split(split);
        }
        return defaultValue;
    }

}
